PHP array functies
Home

PHP array functies

PHP array functies

We bespreken kort een aantal functies voor werken met array's. We geven hier geen uitgebreide geen praktijkvoorbeelden. Deze komen later aan bod.
  1. Elementen in een array tellen

    De functie count() telt het aantal elementen in een array.

    int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )

    Als je slechts het eerste argument opgeeft, namelijk een array, dan worden alleen de elementen van het eerste niveau geteld:

    $lessen = array('Programmeren', 'Multimedia', 'Netwerkbeheer');
    echo '<p>Aantal lessen: ' . count($lessen) . '</p>';
    

    Output:

    Aantal lessen: 3

    Als we alle elementen op alle niveaus in een multidimensionale array willen tellen, dan geven we het getal 1 als extra parameter mee, de zogenaamde mode:

    $school['A'] = array('naam'=>'JavaScript', 'versie'=>'ES8', 'uren'=>'24', 'locatie'=>'Antwerpen');
    $school['B'] = array('naam'=>'Frans', 'uren'=>'20', 'locatie'=>'Brussel');
    echo '<p>Aantal scholen: ' . count($school) . '</p>';
    echo '<p>Aantal aantal elementen in de multidimensionele array: ' . count($school, 1) . '</p>';

    Output:

    Aantal scholen: 2
    Aantal aantal elementen in de multidimensionele array: 9
  2. Controleren of een element bestaat

    Met de functie in_array() kan je controleren worden of een bepaald element in een array aanwezig is:

    bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

    Deze functie zoekt dus naar een naald in een hooiberg en geeft TRUE als de naald gevonden is en FALSE als het gezochte element niet in de array aanwezig is. in_array() kan alleen zoeken in een enkelvoudige array en niet in een multidimensionele array:

    $namen = array('voornamen' => array('Jan', 'Mohamed', 'Anna'),
        'familienamen' => array('Jannsens', 'El Farisi', 'Mercx'));
    echo '<p>Bestaat de waarde <em>voornamen</em> in de array $namen? ';
    echo in_array('voornamen', $namen) ? 'bestaat' : 'bestaat niet';
    echo '</p>';
    echo '<p>Bestaat de waarde <em>achternamen</em> in de array $namen? ';
    echo in_array('achternamen', $namen) ? 'bestaat' : 'bestaat niet';
    echo '</p>';
    echo '<p>Bestaat de waarde <em>Mohamed</em> in de array $namen[\'voornamen\']? ';
    echo in_array('Mohamed', $namen['voornamen']) ? 'bestaat' : 'bestaat niet';
    echo '</p>';

    Output:

    Bestaat de waarde voornamen in de array $namen? bestaat niet
    Bestaat de waarde achternamen in de array $namen? bestaat niet
    Bestaat de waarde Kristiaan in de array $namen['voornamen']? bestaat
  3. Controleren of sleutel bestaat
    1. Syntaxis
      Je kan ook nagaan of een bepaalde sleutel bestaat. Dat doe je met de functie array_key_exists():
      bool array_key_exists ( mixed $key , array $array )

      Als key wordt de naam van een sleutel gegeven waarnaar gezocht wordt in de array search. Als de sleutel wordt gevonden, wordt TRUE geretourneerd en anders FALSE.

      $school['A'] = array('naam'=>'JavaScript', 'versie'=>'ES8', 'uren'=>'24', 'locatie'=>'Antwerpen');
      $school['B'] = array('naam'=>'Frans', 'uren'=>'20', 'locatie'=>'Brussel');
      echo '</p>';
      echo '<p>Bestaat de sleutel <em>A</em> in de array $school? ';
      echo array_key_exists('A', $school) ? 'bestaat' : 'bestaat niet';
      echo '</p>';
      echo '<p>Bestaat de sleutel <em>versie</em> in de array $school[\'A\']? ';
      echo array_key_exists('versie', $school['A']) ? 'bestaat' : 'bestaat niet';
      echo '</p>';
      echo '<p>Bestaat de sleutel <em>datum</em> in de array $school[\'A\']? ';
      echo array_key_exists('datum', $school['A']) ? 'bestaat' : 'bestaat niet';
      echo '</p>';

      Output:

      Bestaat de sleutel A in de array $school? bestaat
      Bestaat de sleutel versie in de array $school['A']? bestaat
      Bestaat de sleutel datum in de array $school['A']? bestaat niet
    2. Toepassing
      Vooraleer een nieuw sleutel-waarde paar aan een associatieve array toe te voegen, kan het nuttig zijn om na te gaan of de sleutel al bestaat.
      $persoonAA = array('FirstName' =>'Herman', 
          'LastName' => 'Van Veen', 
          'Street' => 'Bromstraat 20', 
          'PostalCode'=>'2000', 
          'City' => 'Amsterdam');
      
      
      $sleutelBestaat = FALSE;
      $sleutelBestaat = array_key_exists ( 'sleutel' , $persoonAA );
      
      if ($sleutelBestaat) {
          echo '<br/>De sleutel met de naam sleutel bestaat'; 
      } else {
          echo '<br/>De sleutel met de naam sleutel bestaat niet';       
      }
      
      // vooraleer een nieuwe string-index toe te voegen
      // kan je verifieren als de sleutel al bestaat
      if (array_key_exists ( 'Leeftijd' , $persoonAA )) {
          echo '<br/>De sleutel met de naam Leeftijd bestaat al, kies een andere naam'; 
      } else {
          $persoonAA['Leeftijd'] = 20;
      }
      
      foreach ($persoonAA as $sleutel => $waarde) {
          echo '<br/> sleutel is ' . $sleutel . ' waarde is: ' . $waarde;
      }
      
      
  4. Array sorteren

    PHP kan de elementen in een array sorteren met de functie sort(). Deze functie ordent de elementen in een array van laag naar hoog. Tijdens het sorteren worden alle sleutels verwijderd, waarna nieuwe automatisch genummerde sleutels worden toegevoegd. Gebruik deze functie dus niet op array's waarbij de de namen van de sleutels van belang zijn!

    bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  5. Een array verwijderen

    Voordat een nieuwe array gemaakt wordt middels de methode met rechte haken, moet je er voor zorgen dat deze array ook daadwerkelijk verwijderd. Als er nog een array bestaan met dezelfde naam, dan worden er immers elementen toegevoegd aan de reeds bestaande array.

    De functie unset() verwijdert een variabele, en dus ook een array.

    void unset ( mixed $var [, mixed $... ] )

    De functie accepteert de namen van één of meerdere variabelenen retourneert geen waarde als resultaat.

    Stel dat onderstaande array ergens anders in het script is aangemaakt:

    $voornamen = array('Jan', 'Mohamed', 'Anna');
    

    Je denkt nu een nieuwe array $voornamen te maken met andere waarden:

    $voornamen[] = 'Kristiaan';
    $voornamen[] = 'Louise';
    

    In plaats van een nieuwe array, is de oude array uitgebreid en bestaat nu uit de waarden Jan, Mohamed, Anna, Kristiaan en Louise.

    Met unset() kan je er voor zorgen dat Jan, Mohamed en Anna eerst verwijderd worden:

    unset($voornamen);
    

    Nu maak je effectief een nieuwe array:

    $voornamen[] = 'Kristiaan';
    $voornamen[] = 'Louise';
    

    Een alternatieve methode om een array te wissen, in geval de variabele opnieuw als array gebruikt gaat worden, is om de variabele eerst te initialiseren als een lege array:

    $voornamen = array();
    

    Als we nu elementen aan de array toevoegen is het nieuwe array en verkrijgen we het resultaat dat we verwachten, namelijk een array $voornamen met 3 waarden

    $voornamen[] = 'Alesha';
    $voornamen[] = 'Oscar';
    $voornamen[] = 'Kees';
    

JI
2020-02-05 16:54:40